Skip to content

feat(preflight): 显示同机 sibling drafts - #200

Draft
catoncat wants to merge 1 commit into
mainfrom
agent/preflight-sibling-draft-claims
Draft

feat(preflight): 显示同机 sibling drafts#200
catoncat wants to merge 1 commit into
mainfrom
agent/preflight-sibling-draft-claims

Conversation

@catoncat

Copy link
Copy Markdown
Collaborator

Mainline Intent

Intent: int_ad53756e
Status: proposed
Title: 让 preflight 看见同机 sibling drafts

What changed

preflight 现在返回有界的 sibling_worktree_drafts 列表与总数,draft 携带从 goal/turn 推导的 partial fingerprint;当当前工作与 sibling draft 命中同文件或完全相同目标时,输出 sibling_draft_overlap、分支与 worktree 路径。

Why

drafting 按设计是 local-only,过去 status 虽能扫描同机 worktree,preflight 却不会呈现,导致并行 Agent 在开始工作时看不到同机正在进行的实现。先复用已有 scanner 补齐本地发现,可立即降低重复工作,同时不假装已经解决跨 clone claim。

Decisions

  • draft 生命周期: 保持 drafting local-only,不新增或提前使用 sealed/proposed 状态。 (协作发现不应冻结未完成实现,也不应制造 Handle same-branch staged proposals as PR intent lineage #186 描述的 staged proposal 噪音。)
  • 同机发现接口: 复用 status 的 sibling worktree scanner,在 preflight 顶层返回最近 8 个摘要,并在 facts 保留总数。 (调用方只需 preflight 一个接口;有界输出避免大量历史 worktree 膨胀上下文。)
  • 冲突强度: 同文件或完全相同目标只产生 warn,并提供 branch/worktree 定位。 (draft partial fingerprint 不是最终证据,适合提示协调而不适合自动硬阻断。)
  • partial fingerprint 来源: 只从本地 draft goal 和已记录 turns 推导,不额外遍历每个 sibling 的 Git 历史。 (保持 status/preflight 成本有界,并避免把 transient worktree 内容变成共享状态。)

Subsystems: docs, engine

Scope

这是 #199 的第一段本地可见性切片:

  • 解决同一 clone / 同一台机器上的 sibling worktree draft 发现;
  • 不实现跨 clone 的 lease-backed shared claim;
  • 不改变 drafting → sealed_local → proposed 生命周期;
  • 不以提前 seal 替代 claim。

Verification

  • 新增 3 条行为测试:unmatched draft 可见、同文件 warn、中文完全相同 goal warn
  • 现有全部 TestPreflight*
  • TestStatus_SurfacesSiblingWorktreeDrafts
  • TestShowNotFoundSurfacesSiblingWorktreeDraft
  • CLI TestPreflight*
  • go vet ./internal/engine ./internal/cli
  • git diff --check
  • 本地真实 readback:在 better checkout 的 preflight 中发现 2 个 sibling drafts 及 partial fingerprints

未运行与本改动无关的全量 fuzz/property 测试。

Related: #199
Adjacent: #186

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant